Generalized semi-infinite programming